home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_00_doorkey.cog < prev    next >
Text File  |  1998-02-25  |  5KB  |  162 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # 00_DOORKEY.COG
  4. #
  5. # Multiple Doors opened with a key
  6. # Use 0 in "key" for the Red Key (default), 1 for Blue and 2 for Yellow
  7. #
  8. # [YB]
  9. #
  10. # 8/28/97 Added clicking sounds [DB]
  11. #
  12. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  13.  
  14.  
  15. symbols
  16.  
  17. thing       door0                            linkid=0 mask=0x405
  18. thing       door1                            linkid=1 mask=0x405
  19. thing       door2                            linkid=2 mask=0x405
  20. thing       door3                            linkid=3 mask=0x405
  21.  
  22. flex        movespeed=8.0
  23. flex        sleeptime=2.0
  24. flex        lightvalue=0.5
  25. int         key=0
  26.  
  27. sound       locked_snd=kk60027.wav          local
  28. sound       wav0=lvrclik2.wav
  29.  
  30. sector      doorsector                       local
  31. int         numdoors                         local
  32. int         doorstatus                       local
  33. int         movestatus                       local
  34. int         player                           local
  35.  
  36. flex        lasttime=-1                      local
  37. flex        curtime=-1                       local
  38.  
  39. message     startup
  40. message     activated
  41. message     arrived
  42. message     blocked
  43. message     timer
  44.  
  45. end
  46.  
  47. # ========================================================================================
  48.  
  49. code
  50.  
  51. startup:
  52.    if (door0 >= 0) numdoors = numdoors + 1;
  53.    if (door1 >= 0) numdoors = numdoors + 1;
  54.    if (door2 >= 0) numdoors = numdoors + 1;
  55.    if (door3 >= 0) numdoors = numdoors + 1;
  56.  
  57.    doorsector = GetThingSector(door0);
  58.    SectorAdjoins(doorsector, 0);
  59.    SectorLight(doorsector, lightvalue, 0.0); // add some light to door sector
  60.  
  61.    Return;
  62.  
  63. # ........................................................................................
  64.  
  65. activated:
  66.    player = jkGetLocalPlayer();
  67.  
  68.    if ((GetInv(player, 46 + key) == 1.0) || (GetSourceRef() != player))       // if player has the needed key
  69.    {                                         // or enemy triggers door
  70.       call checkstatus;
  71.       if(movestatus) return;
  72.       if(doorstatus == 0)
  73.       {                                      // all pieces are at frame 0
  74.          SectorAdjoins(doorsector, 1);
  75.          // show the key icon for 2 seconds
  76.          SetInvActivated(player, 46 + key, 1);
  77.          SetTimerEx(2, 1, 0, 0);
  78.          // PlaySoundThing(key_snd, player, 1.0, -1, -1, 0);
  79.          call open_doors;
  80.       }
  81.    }
  82.    else
  83.    {
  84.       PlaySoundThing(wav0, door0, 1.0, -1, -1, 0);
  85.       curtime = GetLevelTime();
  86.       if( (lasttime == -1) || (curtime - lasttime > 3) )
  87.       {
  88.          PlaySoundThing(locked_snd, player, 1.0, -1, -1, 0);
  89.          jkPrintUNIString(-1, 60027);
  90.          lasttime = curtime;
  91.       }
  92.    }
  93.  
  94.    Return;
  95.  
  96. # ........................................................................................
  97.  
  98. arrived:
  99.    call checkstatus;
  100.    if(movestatus) return;
  101.    if(doorstatus == numdoors)
  102.    {                                         // all pieces are at frame 1
  103.       sleep(sleeptime);
  104.       call close_doors;
  105.    }
  106.    else if(doorstatus == 0)
  107.    {                                         // all pieces are at frame 0
  108.       sectoradjoins(doorsector, 0);
  109.    }
  110.  
  111.    Return;
  112.  
  113. # ........................................................................................
  114.  
  115. blocked:
  116.    call open_doors;
  117.  
  118.    Return;
  119.  
  120. # ........................................................................................
  121.  
  122. timer:
  123.    // Remove the key icon
  124.    SetInvActivated(player, 46 + key, 0);
  125.    Return;
  126.  
  127. # ........................................................................................
  128.  
  129. open_doors:
  130.    MoveToFrame(door0, 1, movespeed);
  131.    if (door1 >= 0) MoveToFrame(door1, 1, movespeed);
  132.    if (door2 >= 0) MoveToFrame(door2, 1, movespeed);
  133.    if (door3 >= 0) MoveToFrame(door3, 1, movespeed);
  134.  
  135.    Return;
  136.  
  137.  
  138. close_doors:
  139.    MoveToFrame(door0, 0, movespeed);
  140.    if (door1 >= 0) MoveToFrame(door1, 0, movespeed);
  141.    if (door2 >= 0) MoveToFrame(door2, 0, movespeed);
  142.    if (door3 >= 0) MoveToFrame(door3, 0, movespeed);
  143.  
  144.    Return;
  145.  
  146.  
  147. checkstatus:
  148.    movestatus = IsThingMoving(door0);
  149.    if (door1 >= 0) movestatus = movestatus + IsThingMoving(door1);
  150.    if (door2 >= 0) movestatus = movestatus + IsThingMoving(door2);
  151.    if (door3 >= 0) movestatus = movestatus + IsThingMoving(door3);
  152.  
  153.    doorstatus = GetCurFrame(door0);
  154.    if (door1 >= 0) doorstatus = doorstatus + GetCurFrame(door1);
  155.    if (door2 >= 0) doorstatus = doorstatus + GetCurFrame(door2);
  156.    if (door3 >= 0) doorstatus = doorstatus + GetCurFrame(door3);
  157.  
  158.    Return;
  159.  
  160. end
  161.  
  162.